package com.oa4.service;


import com.oa4.dao.EmpDao;
import com.oa4.pojo.Emp;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

@Service
public class ScheduledTaskService {

  @Autowired
  private EmpDao empDao;

  /**
   * 清理被逻辑删除超过30天的员工及其相关数据
   */
  @Transactional // 保证事务性，要么都成功，要么都失败
  public void cleanupDeletedEmployees() {
    System.out.println("【定时任务】开始执行清理任务...");

    // 1. DAO层需要一个新方法：查询所有被删除超过30天的员工
    //List<Emp> oldDeletedEmps = empDao.findOldDeletedEmps(1); // 假设30天
    List<Emp> oldDeletedEmps = empDao.findOldDeletedEmpsByMinute(2);
    if (oldDeletedEmps.isEmpty()) {
      System.out.println("【定时任务】没有需要清理的旧数据。");
      return;
    }

    System.out.println("【定时任务】发现 " + oldDeletedEmps.size() + " 条待清理的员工数据。");

    for (Emp emp : oldDeletedEmps) {
      System.out.println("【定时任务】正在清理员工: " + emp.getNumber());
      // 2. 先删除该员工的所有打卡记录
      empDao.deleteEmpSignByNumber(emp);
      // 3. 再物理删除该员工本人
      empDao.hardDeleteEmp(emp);
    }
    System.out.println("【定时任务】清理任务执行完毕。");
  }
}
